package com.csce.domain.entity.basic;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.osce.common.annotation.Excel;
import com.osce.common.core.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 固定资产管理对象 tab_asset_inventory
 *
 * @author hdj
 * @since 2025-11-15
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@ToString
@EqualsAndHashCode(callSuper = true)
public class TabAssetInventory extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty("${comment}")
    private Long id;

    /**
     * 资产编号（必录）
     */
    @Excel(name = "资产编号")
    @ApiModelProperty("资产编号")
    private String no;

    /**
     * 资产条码（必录）
     */
    @Excel(name = "资产条码")
    @ApiModelProperty("资产条码")
    private String uniqueIdentifier;

    /**
     * 资产名称
     */
    @Excel(name = "资产名称")
    @ApiModelProperty("资产名称")
    private String name;

    /**
     * 型号
     */
    @Excel(name = "型号")
    @ApiModelProperty("型号")
    private String model;

    /**
     * 耗材单位
     */
    @Excel(name = "耗材单位")
    @ApiModelProperty("耗材单位")
    private String consumeUnit;

    /**
     * 资产类型（必录，关联字典：1-办公设备、2-生产设备、3-电子设备、4-交通工具等）
     */
    @Excel(name = "资产类型")
    @ApiModelProperty("资产类型")
    private Integer type;

    /**
     * 数量（必录）
     */
    @Excel(name = "数量")
    @ApiModelProperty("数量")
    private Long number;

    /**
     * 管理员
     */
    @Excel(name = "管理员")
    @ApiModelProperty("管理员")
    private String administrator;

    /**
     * 管理部门
     */
    @Excel(name = "管理部门")
    @ApiModelProperty("管理部门")
    private Long manageDeptId;

    /**
     * 使用人
     */
    @Excel(name = "使用人")
    @ApiModelProperty("使用人")
    private String charge;

    /**
     * 存放地点
     */
    @Excel(name = "存放地点")
    @ApiModelProperty("存放地点")
    private String storagePlace;

    /**
     * 资产状态-必录
     */
    @Excel(name = "资产状态-必录")
    @ApiModelProperty("资产状态-必录")
    private Integer status;

    /**
     * 单价
     */
    @Excel(name = "单价")
    @ApiModelProperty("单价")
    private BigDecimal price;

    /**
     * 逻辑删除 1存在 2删除
     */
//    @Excel(name = "逻辑删除")
    @ApiModelProperty("逻辑删除")
    private Integer deleted;

    /**
     * 补充的计量单位
     */
    @Excel(name = "计量单位")
    @ApiModelProperty("计量单位")
    private String unitOfMeasure;

    /**
     * 所属分类
     */
    @Excel(name = "所属分类")
    @ApiModelProperty("所属分类")
    private String assetCategory;

    /**
     * 冗余,补充的使用状态
     */
    @ApiModelProperty("所属分类")
    private String usageStatus;

    /**
     * 补充的赋码日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "赋码日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("赋码日期")
    private Date codingDate;

    /**
     * 补充的所属仓库
     */
    @Excel(name = "所属仓库")
    @ApiModelProperty("所属仓库")
    private String affiliatedWarehouse;

    /**
     * 体积
     */
    @Excel(name = "体积")
    @ApiModelProperty("体积")
    private String volume;

    /**
     * 重量
     */
    @Excel(name = "重量")
    @ApiModelProperty("重量")
    private String weight;

    /**
     * 功率
     */
    @Excel(name = "功率")
    @ApiModelProperty("功率")
    private String power;

    /**
     * 生成厂家
     */
    @Excel(name = "生成厂家")
    @ApiModelProperty("生成厂家")
    private String vender;

    /**
     * 收货日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "收货日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("收货日期")
    private Date receiptDate;

    /**
     * 启用日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "启用日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("启用日期")
    private Date activationDate;

    /**
     * 资产来源
     */
    @Excel(name = "资产来源")
    @ApiModelProperty("资产来源")
    private String source;

    /**
     * 购入原因
     */
    @Excel(name = "购入原因")
    @ApiModelProperty("购入原因")
    private String purchaseReason;

    /**
     * 交接人
     */
    @Excel(name = "交接人")
    @ApiModelProperty("交接人")
    private String handoverPerson;

    /**
     * 接收人
     */
    @Excel(name = "接收人")
    @ApiModelProperty("接收人")
    private String recipient;

    /**
     * 货架号/箱号
     */
    @Excel(name = "货架号/箱号")
    @ApiModelProperty("货架号/箱号")
    private String shelfOrBoxNumber;

    /**
     * 存储路径
     */
    @Excel(name = "存储路径")
    @ApiModelProperty("存储路径")
    private String attachmentUrl;

    /**
     * 存储文件名
     */
    @Excel(name = "存储文件名")
    @ApiModelProperty("存储文件名")
    private String attachmentName;

}
